package com.atguigu.rabbitmq.day08;

import com.atguigu.rabbitmq.utils.RabbitMqUtils;
import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * 死信队列之生产者代码
 */
public class Producer {
        /*生产者只负责正常给普通交换机发消息即可，如果过期或其他情况要传给死信交换机，那都是在消费者中写好的*/
        //普通交换机(只给普通交换机传消息)
        public static final  String NORMAL_EXCHANGE="normal_exchange";

    public static void main(String[] args) throws IOException, TimeoutException {
        Channel channel = RabbitMqUtils.getChannel();
        //消费者已经声明过了，生产者就不要再声明了，会报错
        //发死信消息 设置TTL时间（存活时间） 变成死信消息有三种情况 这只是超时的情况
        /*成为死信的情况一(超时)*/
        //AMQP.BasicProperties properties=new AMQP.BasicProperties().builder().expiration("10000").build();//10秒


        for (int i = 1; i < 11; i++) {
            String message="info"+i;
            //要玩死信队列的超时情况 发消息的时候要用到第三个参数
            channel.basicPublish(NORMAL_EXCHANGE,"zhangsan",null,message.getBytes());
        }
    }
/*测试：先启动消费者生成交换机和队列以及绑定关系(消费者中声明的)，然后关闭消费者模拟没有消费者消费，那就会给死信队列*/
}
